In a number of different types of computing environments, hardware resources are often shared between two or more components of the video display system. One example of such a situation occurs when two display devices, e.g., two monitors or a monitor and a video projector, are connected to a single computer. Both of the display devices may be driven by a single video card within the computer. In such a situation, a number of resources provided by the video card are shared between the two display devices. Such resources include the video memory (e.g. frame buffer), overlay hardware, gamma registers, clocks and data buses. Because the two display devices share resources, their configurations become dependent upon one another. For example, if the video card has a frame buffer with eight megabytes (MB) of storage capacity, the display devices may have their resolutions set so that they each require four MB of memory. If one of the monitors is reset to a higher resolution, it may then require six MB of memory. In such a case, only two MB of the frame buffer are available for the other display device, and therefore it must be reconfigured to accommodate the limited amount of memory available to it. For example, the display resolution can be lowered, or the number of bits that are allocated to each pixel can be reduced.
In the past, it was not possible to effect these types of changes dynamically. Rather, when a change of the type described in the example given above was desired, pre-defined rules for division and allocation of resources may have prevented it from being accomplished automatically. For instance, if the rules required equal allocation of available memory between two video devices having the same resolution, each device would only be entitled to 4 MB of the frame buffer. To increase the resolution of one device, therefore, the user may need to take the other device offline, or manually reconfigure its display resolution so that it can continue to be available.
The foregoing example illustrates one instance of configuration dependencies within a display system. Other types of dependencies also exist, due to the sharing of resources. For example, overlay hardware on the video card is typically used for multiple functions, namely scaling (changing the display resolution from a default value) and the display of graphics from a DVD. However, the hardware can only perform one of these functions at any given time. Typically, the DVD display is designated as the default, so that scalable resolution is not available when a DVD movie is playing, for example.
Another example pertains to the gamma correction registers. Since these registers are shared by both display devices, it is not possible to adjust their gamma correction values independently of one another. Rather, the corrections that are set for one display device will also be applied to the other. In another example, the video card's output bandwidth may be such that it cannot drive two high-resolution display devices simultaneously. As a result, one of the display devices is forced into a lower resolution and/or refresh rate.
In each of these situations, a dependency is created, where a change in one configuration parameter necessitates a change in another configuration parameter. If both changes cannot be easily accommodated within the video display system, a static, predetermined decision is implemented which may not be consistent with the desires of the user. For instance, as described previously, an increase of the resolution of one display device may require the user to remove or reconfigure the other display device. It is an objective of the present invention to provide a video display system that dynamically accommodates dependencies that may exist, for example when resources are shared among multiple components of a display system, and thereby avoid undesirable consequences when changes occur in the display system.